Status messages
- All here listed messages are multicast
- All the values are in big-endian
Relative units
To speed up whole communication process by reducing transfered data, some data are not transferred in foating decimal points but in relative units and range. Range is number in real units (such as Volts and Amps) sent in message Range and reference. Current range is common for all transferred currents and the voltage range is common for all transferred voltages.
How to calculate absolute value from relative units:
VMEAS = ( relative value / 32767 ) * VRANGE
If the range is specified in the message description, use that range.
Range examples:
Voltage and current range is constant for each voltage and current specification. If you use only one controller type. You can hardcode range.
Example:
esc3-sc1_24dxa0840
- Urange = 80
- Irange = 400
Controller voltage range Urange 60V 60 80V 80 100V 100 Controller current range Irange 100A 100 400A 400 600A 600
Status message - Range and reference
SID = 27 | multicast message
Payload byte | Datatype | Description |
---|---|---|
0-1 | uint16 | Urange - range for voltage values |
2-3 | uint16 | Irange - range for current values |
4-5 | uint16 | /driver/motor/Uref [V] |
6-7 | uint16 | /driver/motor/Iref [A] |
Status message - Driver state 1
SID = 26 | multicast message
Payload byte | Bit / Datatype | Description |
---|---|---|
0 | bit 0-3 | /driver/enabled |
0 | bit 4-7 | Driver algorithm. BLDC - bit4 enabled, VECTOR - bit5 enabled |
1 | uint8 | /driver/stat |
2 | uint8 | /driver/mode |
3 | int8 | /driver/temp |
4-5 | uint16 | /driver/limit |
6-7 | uint16 | /driver/error |
Status message - Driver state 2
SID = 36 | multicast message
Payload byte | Datatype | Description |
---|---|---|
0-1 | int16 | /driver/cmd scaled to -32767 - 32767 |
2-3 | uint16 | /driver/totallimit scaled to 0 - 65535 |
4-5 | uint16 | /driver/ptctemp [-] (no scaling) |
6 | uint8 | /driver/imult scaled to 0 - 255 |
7 | uint8 | /driver/umult scaled to 0 - 255 |
Status message - Supply 1
SID = 28 | multicast message
Payload byte | Datatype | Description |
---|---|---|
0-1 | int16 | /driver/supply/currentf in relative units |
2-3 | int16 | /driver/supply/voltage in relative units |
4-7 | int32 | /driver/supply/cap in [mAh] |
Status message - Motor 1
SID = 30 | multicast message
Payload byte | Datatype | Description |
---|---|---|
0-1 | int16 | Amplitude of motor current (q+d axis) in relative units |
2-3 | int16 | /driver/motor/voltage in relative units |
4-7 | int32 | /driver/motor/energy in [J] |
Status message - Motor 2
SID = 31 | multicast message
Payload byte | Datatype | Description | Range |
---|---|---|---|
0-1 | int16 | /driver/power in relative units | Urange*Irange |
2-3 | int16 | Mechanical angle [radian] | 3.14 |
4-5 | int16 | /driver/motor/rpmf | int16 * 8 |
6-7 | int16 | /driver/motor/odo | 1 |
Status message - Motor 3
SID = 32 | multicast message
Payload byte | Datatype | Description |
---|---|---|
0-1 | int16 | /driver/motor/currentq in relative units (output from pid_iq) |
2-3 | int16 | currentq reference (input to pid_iq) |
4-5 | int16 | /driver/motor/currentd in relative units (output from pid_id) |
6-7 | int16 | currentd reference (input to pid_id) |
Status message - Motor 4
SID = 33 | multicast message
Payload byte | Datatype | Description |
---|---|---|
0-1 | int16 | Rthermistor [ohm] |
2-3 | int16 | /driver/motor/mres [mohm] |
4-5 | int16 | Actual motor torque [Nm] * 100 |
6-7 | int16 | Maximum possible torque [Nm] * 100 |